// Copyright 2009, 2010 The Apache Software Foundation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. Tapestry.Logging = { debug: function(msg) { if (Tapestry.DEBUG_ENABLED) Tapestry.Logging.updateConsole("t-debug", msg); }, warn: function(msg) { Tapestry.Logging.updateConsole("t-warn", msg); }, error: function(msg) { Tapestry.Logging.updateConsole("t-err", msg); }, /** Formats a message and updates the console. The console is virtual * when FireBug is not present, the messages float in the upper-left corner * of the page and fade out after a short period. The background color identifies * the severity of the message (red for error, yellow for warnings, grey for debug). * Messages can be clicked, which removes the immediately. * * When FireBug is present, the error(), warn() and debug() methods do not invoke * this; instead those functions are rewritten to write entries into the FireBug console. * * @param className to use for the div element in the console * @param message message template */ updateConsole : function (className, message) { if (Tapestry.Logging.console == undefined) Tapestry.Logging.console = Tapestry.Logging.createConsole("t-console"); Tapestry.Logging.writeToConsole(Tapestry.Logging.console, className, message); }, createConsole : function(className) { var body = $$("BODY").first(); var console = new Element("div", { 'class': className }); body.insert({ top: console }); return console; }, writeToConsole : function(console, className, message, slideDown) { var div = new Element("div", { 'class': className }).update(message).hide(); console.insert({ top: div }); new Effect.Appear(div, { duration: .25 }); var effect = new Effect.Fade(div, { delay: Tapestry.CONSOLE_DURATION, afterFinish: function() { Tapestry.remove(div); }}); div.observe("click", function() { effect.cancel(); Tapestry.remove(div); }); } }